using System;
using System.Runtime.InteropServices;
using System.Security;
using DirectShowLib;

namespace ConsolePlayer
{
	public class Uuids
	{
		public static readonly Guid NormalSource = new Guid("{E436EBB5-524F-11CE-9F53-0020AF0BA770}");
		public static readonly Guid RealMediaSplitterFilter = new Guid("E21BE468-5C18-43EB-B0CC-DB93A847D769");
		public static readonly Guid RealMediaSourceFilter = new Guid("765035B3-5944-4A94-806B-20EE3415F26F");
		public static readonly Guid RealVideoDecoder = new Guid("238D0F23-5DC9-45A6-9BE2-666160C324DD");
		public static readonly Guid RealAudioDecoder = new Guid("941A4793-A705-4312-8DFC-C11CA05F397E");
		public static readonly Guid MPEG2Demultiplexer = new Guid("afb6c280-2c41-11d3-8a60-0000f81e0e4a");
	}

	/*

	[ComImport,
	Guid("E21BE468-5C18-43EB-B0CC-DB93A847D769")]
	public interface IRealMediaSplitterFilter : IBaseFilter
	{
	//    bool IsAnyPinDrying();

	//    int BreakConnect(PinDirection dir, IPin pPin);
	//    int CompleteConnect(PinDirection dir, IPin pPin);

	//    int GetPinCount();
	//    IPin GetPin(int n);

	//    int Stop();
	//    int Pause();
	//    int Run(long tStart);

	//// IFileSourceFilter

	//    int Load(string pszFileName, out MediaType pmt);
	//    int GetCurFile(out string ppszFileName, out MediaType pmt);

	//    // IMediaSeeking
	//    int GetCapabilities(out uint pCapabilities);
	//    int CheckCapabilities(out uint pCapabilities);
	//    int IsFormatSupported(out Guid pFormat);
	//    int QueryPreferredFormat(out Guid pFormat);
	//    int GetTimeFormat(out Guid pFormat);
	//    int IsUsingTimeFormat(out Guid pFormat);
	//    int SetTimeFormat(out Guid pFormat);
	//    int GetDuration(out Int64 pDuration);
	//    int GetStopPosition(out Int64 pStop);
	//    int GetCurrentPosition(out Int64 pCurrent);
	//    int ConvertTimeFormat(out Int64 pTarget, out Guid pTargetFormat, Int64 Source, out Guid pSourceFormat);
	//    int SetPositions(out Int64 pCurrent, uint dwCurrentFlags, out Int64 pStop, uint dwStopFlags);
	//    int GetPositions(out Int64 pCurrent, out Int64 pStop);
	//    int GetAvailable(out Int64 pEarliest, out Int64 pLatest);
	//    int SetRate(double dRate);
	//    int GetRate(out double pdRate);
	//    int GetPreroll(out Int64 pllPreroll);
	//    int GetKeyFrameCount(out uint nKFs);
	//    int GetKeyFrames(out Guid pFormat, out long pKFs, out uint nKFs);
	}

	[ComImport,
	Guid("765035B3-5944-4A94-806B-20EE3415F26F")]
	public interface IRealMediaSourceFilter : IRealMediaSplitterFilter
	{
	}

	[ComImport,
	Guid("238D0F23-5DC9-45A6-9BE2-666160C324DD")]
	public interface IRealVideoDecoder : IBaseFilter
	{
		//int Transform(out IMediaSample pIn);
		//int CheckInputType( out MediaType mtIn);
		//int CheckTransform(out MediaType mtIn, out MediaType mtOut);

		//int StartStreaming();
		//int StopStreaming();

		//int NewSegment(long tStart, long tStop, double dRate);
		//int AlterQuality(Quality q);
	}

	[ComImport,
	Guid("941A4793-A705-4312-8DFC-C11CA05F397E")]
	interface IRealAudioDecoder : IBaseFilter
	{
		//int Receive(out IMediaSample pIn);
		//int CheckInputType(out MediaType mtIn);
		//int CheckTransform(out MediaType mtIn, out MediaType mtOut);
		//int DecideBufferSize(out IMemAllocator pAllocator, IntPtr pProperties);
		//int GetMediaType(int iPosition, out MediaType pMediaType);

		//int StartStreaming();
		//int StopStreaming();

		//int EndOfStream();
		//int BeginFlush();
		//int EndFlush();
		//int NewSegment(long tStart, long tStop, double dRate);
	}
	 * */
}
